1. Field of the Invention
This invention relates generally to system for invalidating requests pending to one or more system resources within a data processing system; and, more specifically, relates to a system for programmably invalidating requests stored within a queue of a data processing system using a selectable one of the requests fields to perform the invalidation.
2. Discussion of the Prior Art
In data processing systems, multiple requesting units such as instruction processors are often requesting access to one or more shared resources such as memories. To handle these requests in an orderly fashion, the requests may be temporarily stored in a storage structure and processed based on a predetermined priority scheme. By using a priority scheme that is tuned to select requests based both on the availability of the requested resources and the demand of the requesting units, system throughput may be optimized.
The use of centralized request-handling mechanism often improves system efficiency. However, this scheme may result in system bottlenecks when faults occur within one of the requesting units or shared resources. For example, a faulty requesting unit such as an instruction processor may cause a flood of spurious requests to the shared request storage logic that will fill the available storage and prevent other requesting units from entering requests. Similarly, a failing one of the shared resources such as a shared memory may become unavailable because of a fault. Because this resource is no longer processing requests, a backlog of requests to this unit may accumulate in the request storage logic such that requests to other ones of the shared resources may not be entered into the request storage logic. Thus, in a system employing a centralized request-handling scheme, a failing resource may seriously impact the ability to efficiently handle requests.
One way to handle the occurrence of faults in either the requesting or receiving units is to process any pending requests associated with the faulty units even though the processing of these requests may result in errors. This request processing is performed to clear the requests associated with the failing units from the request storage logic. Generally, this type of request processing must continue until all such requests are purged from the request storage logic, and no more additional requests are being issued. For example, requests from a failing requesting unit that have been already been entered into a centralized request storage unit may be selected for processing in the normal manner even though these requests are associated with a requesting unit that is known to be failing. These requests may be presented to, and processed by, a shared resource, with any request results being returned to the requesting unit. Since the requesting unit has failed, any returned results will be discarded. Such processing may continue until the failing unit is disabled and request initiation is discontinued.
The above-described method of request fault handling is not complex to implement since it does not involve special-case handling of erroneous requests. However, this method has several disadvantages. First, the shared resources waste processing time handling requests from the failing unit. This time could instead be spent processing legitimate requests. Moreover, system overhead is imposed in returning any associated response to the failing unit. System overhead is also imposed by any error handling that occurs because the failing unit is not able to properly receive the response. Additionally, requests from failing units may be formatted improperly, may cause errors during processing by the shared resources, or worse yet, may corrupt data associated with a shared resource. Finally, if the failing unit can not be quickly disabled, a period of time may elapse during which the other non-failing units are denied access to the shared resource because of a flood of spurious requests from the failing unit.
Similar problems exist when stored requests to a known failing resource are processed in a normal manner. For example, one way to discard the requests to failing units is to force these requests to be handled like any other request, with resulting errors being processing by the error-handling circuitry of the system. For instance, after a request is presented to a failing unit, timer circuits may be used to generate an error response if the failing unit does not respond in a predetermined amount of time. While this method of processing known erroneous requests requires a minimal amount of special-case logic to implement, it results in increased system overhead because of the error and response handling that is involved. Moreover, the handling of requests by a failing unit may result in corruption of data associated with the shared resource.
Because of the importance of maintaining data integrity, ensuring continued access to resources, and providing a resilient error-handling mechanism in data processing systems using centralized request handling mechanisms, an improved error-handling system is needed for invalidating pending requests that are associated with a known fault.
The primary object of the invention is to provide an improved system for invalidating pending requests within a data processing system;
A further object of the invention is to provide a system for invalidating pending requests to access system resources based on the contents of a programmably selectable one of multiple fields included in the request;
A further object of the invention is to provide a system for invalidating pending requests to access system resources based on a requester identifier stored within a programmably selectable one of multiple fields included in the request;
Yet another object of the invention is to provide a system for invalidating pending requests to access system resources based on a resource identifier stored within a programmably selectable one of multiple fields included in the request;
A still further object of the invention is to provide a system for invalidating pending requests to access system resources based on the contents of a programmably selectable one of multiple fields included in the request, wherein the selectable one of the multiple fields is selectable using a dynamic scan-set interface;
Another object of the invention is to provide a system for invalidating pending requests to access system resources based on a job number identifier uniquely identifying one of the pending requests;
A yet further object of the invention is to provide a Content Addressable Memory (CAM) having a programmably-selectable compare field;
Another object of the invention is to provide a system for processing invalidation requests, wherein each invalidation request specifies a selectable request field and a compare value for use in invalidating pending requests;
A still further object of the invention is to provide a system for invalidating pending requests using a selectable one of multiple request fields that is selected upon the occurrence of a fault; and
An additional object of the invention is to prevent further requests to be received from any requester or issued to any resource if that requester or resource has previously been associated with a reported fault.
These and other more detailed and specific objectives of the invention will become apparent from the following description of the invention.
The objectives of the present invention are achieved in a system for invalidating pending requests within a data processing system. According to the preferred embodiment, one or more requesting units make requests to gain access to one or more shared resources. These requests are stored in a central request storage unit and are processed according to a predetermined priority scheme and according to resource availability.
Each request as stored in the request storage unit includes several request fields, including fields storing the identity of the requesting unit and the identity of the requested resource. Other fields could include data for uniquely identifying a specific request, and a function field for identifying the request type.
Error indicators are provided in the current system to indicate the occurrence of a respective fault and to further provide an error indication value that provides information about the nature of the fault. Each error indicator is associated with a respective one of the request fields.
According to the current invention, mode control logic programmably selects one of the request fields as the invalidation field. If any error indicator associated with the selected invalidation field is asserted, the error indication value provided by this error indicator is compared against the invalidation field of all pending requests. In the event a predetermined relationship exists between two compared values, the associated pending request is invalidated such that the request is discarded without being presented to the requested shared resource. In the preferred embodiment of the invention, this invalidation occurs for any request for which the value stored in the invalidation field is the same as that indicated by the error indication value.
According to one aspect of the invention, the invalidation field is selectable by a scan-set interface that may be dynamically re-programmed during normal system operations. According to another aspect of the invention, ones of the error indicators are each associated with a respective requesting unit or shared resource. Once an error indicator that is associated with a requesting unit or a shared resource has been received, no further requests for that requesting unit or shared resource will be accepted or stored within the request storage unit until an operation is performed to reset the error indication logic. This prevents requests from, or to, failing units from accumulating within the request storage device, in a manner which may prevent the processing of requests from, or to, non-failing units.
In one embodiment of the current invalidation system, the system includes logic to generate invalidation requests. Like error indicators, these invalidation requests are provided to the request storage device to request the invalidation of one or more of the pending requests based on an invalidation value included in the request. Unlike the error indicators, each of these invalidation requests further includes an indicator that selects which one of the request fields is to be used as the invalidation field. The invalidation system further includes logic for using the invalidation field provided by an invalidation request to override the invalidation field that is programmably selected by the scan-set interface.
According to yet another aspect of the invention, the invalidation field is selected as being any field that is either associated with any asserted error indicator or that is indicated as being the invalidation field by a valid invalidation request. In the event multiple error indicators and/or invalidation requests are simultaneously asserted and/or issued, a predetermined priority scheme is used to determine the order in which invalidation operations will be performed.
The current invalidation system provides a mechanism for discarding pending requests that are associated with known system faults. The requests may be discarded based on a specified value stored in any selectable one of multiple request fields. By discarding pending requests in this manner, system resources are not wasted processing erroneous requests, and are therefor available for processing legitimate requests. Moreover, because requests associated with known faults are discarded without being presented to a shared resource, the integrity of any data associated with the shared resources is preserved.
Still other objects and advantages of the present invention will become readily apparent to those skilled in the art from the following detailed description of the preferred embodiment and the drawings, wherein only the preferred embodiment of the invention is shown, simply by way of illustration of the best mode contemplated for carrying out the invention. As will be realized, the invention is capable of other and different embodiments, and its several details are capable of modifications in various respects, all without departing from the invention. Accordingly, the drawings and description are to be regarded to the extent of applicable law as illustrative in nature and not as restrictive.